
#include "type.h"
#include "const.h"
#include "protect.h"
#include "proto.h"
#include "string.h"
#include "proc.h"
#include "global.h"

PUBLIC int sys_get_ticks() {
    //disp_str("+");
    return ticks;
}

// 进程调度
PUBLIC void schedule() {
    PROCESS* p;
    int greatest_ticks = 0;

    while(!greatest_ticks) {
        for(p = proc_table; p < proc_table + NR_TASKS; p++) {
            if(p -> ticks > greatest_ticks) { // 寻找所有进程中最大的 ticks
                disp_str("<");
                disp_int(p -> ticks);
                disp_str(">");
                greatest_ticks = p -> ticks;
                p_proc_ready = p; // 并且让该进程先执行
            }
        }
        // 若全部进程 ticks 都为 0，则重置 ticks 值，使其重新运行
        /*if(!greatest_ticks) {
            for(p = proc_table; p < proc_table + NR_TASKS; p++) {
                p -> ticks = p -> priority;
            }
        }*/
    }
}
